#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
using Cephei.QL.Termstructures;
using Cephei.QL;
namespace Cephei.QL.Termstructures.Yield
{
     // <summary> 
	// ! The given date will be the implied reference date.  \note This term structure will remain linked to the original structure, i.e., any changes in the latter will be reflected in this structure as well.  \ingroup yieldtermstructures  \test - the correctness of the returned values is tested by checking them against numerical calculations. - observability against changes in the underlying term structure is checked.
	// </summary>
    [Guid ("5F8F6AB3-B9E2-4286-9D42-554917BD2008"),ComVisible(true)]
	public interface IImpliedTermStructure : Cephei.QL.Termstructures.IYieldTermStructure
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Cephei.QL.Times.ICalendar Calendar {get;}
        
		 Cephei.QL.Times.IDayCounter DayCounter {get;}
        
		 DateTime MaxDate {get;}
        
		 UInt32 SettlementDays {get;}
    }

    // <summary> 
	// ! The given date will be the implied reference date.  \note This term structure will remain linked to the original structure, i.e., any changes in the latter will be reflected in this structure as well.  \ingroup yieldtermstructures  \test - the correctness of the returned values is tested by checking them against numerical calculations. - observability against changes in the underlying term structure is checked. Factory
	// </summary>
   	[ComVisible(true)]
    public interface IImpliedTermStructure_Factory // : Collection_Factory<IImpliedTermStructure, ICell<IImpliedTermStructure>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IImpliedTermStructure Create (Cephei.QL.Termstructures.IYieldTermStructure prm1, DateTime referenceDate);
    }
}

